#include <stdio.h>

void my_strcpy(char *dest, char *src){
#if 0
	int i = 0;
	while(*(src+i) != '\0'){
		*(dest+i) = *(src+i);
		i++;
	}
	*(dest+i) = *(src+i);
#endif

#if 0
	while(*src != '\0'){
		*dest = *src;
		dest++;
		src++;
	}
	*dest = *src;
#endif

#if 0
	while(*src){
		*dest++ = *src++;
	}
	*dest = *src;
#endif

#if 1
	while(*dest++ = *src++);
	// 这种写法会先把src的 '\0' 赋值给dest对应的位 再判断表达式为假
	// 所以循环结束后无需再单独赋值 '\0' 了
	// 这种写法循环结束后 src 和 dest 都是指向 '\0' 的后一个元素的
#endif

	return;
}

int main(int argc, const char *argv[])
{
	char s1[32] = "hello world";
	char s2[32] = "beijing";
	my_strcpy(s1, s2);
	printf("%s\n", s1); // beijing

	return 0;
}
